﻿#region usings
using System;
using System.Collections.ObjectModel;
using System.ServiceModel.DomainServices.Client;
using InsuranceAdjuster.Web.Models;
using InsuranceAdjuster.Services;
using InsuranceAdjuster.DesignModels;
using System.Collections.Generic;
using InsuranceAdjuster.OccasionallyConnected;
using InsuranceAdjuster.Web.Services;
#endregion
namespace InsuranceAdjuster.DesignServices{
    public class DesignAdjusterAppointmentDataService : IInsuranceAdjusterDataService {

        public InsuranceAdjuster.Web.Services.SLInsuranceDomainContext DataContext { get { return null; } }

        public event EventHandler<HasChangesEventArgs> NotifyHasChanges;

        public void SaveAll(Action<SubmitOperation> callback, object state) {
            callback(null);
        }

        public void GetAppointmentByAdjuster(Action<ObservableCollection<AdjusterAppointment>> callback, string adjuster_Id) {
            callback(new DesignAdjusterAppointment());
        }

        public void GetAppointments(Action<ObservableCollection<AdjusterAppointment>> callback) {
            callback(new DesignAdjusterAppointment());
        }

        public void GetClaims(Action<ObservableCollection<Claim>> callback) {
            callback(new ClaimDesignModel());
        }

        public void GetClaimById(Action<ObservableCollection<Claim>> callback, Guid claim_Id) {
            callback(new ClaimDesignModel());
        }

        public void SaveClaim(Action<SubmitOperation> callback, object state) {
            throw new NotImplementedException();
        }

        public void GetClaimDamageByClaimId(Action<ObservableCollection<ClaimDamage>> callback, Guid claim_Id) {
            callback(new ClaimDamageDesignModel());
        }


        public void GetBranchOffice(Action<ObservableCollection<BranchOffice>> callback) {
            callback(new BranchOfficeDesignModel());
        }

        public void GetBranchStyles(Action<Models.BranchStyle> callback) {
            callback(new Models.BranchStyle());
        }
        public void GetBranchStylesByBranchId(Action<Models.BranchStyle> callback, string branch_Id) {
            callback(new Models.BranchStyle());
        }
        public void SaveBranchStyles(Action<Models.BranchStyle> callback, object state) {
        }

        public void GetClaimStatus(Action<ObservableCollection<ClaimStatu>> callback) {
            callback(new ClaimStatusDesignModel());
        }

        public void GetStandardVehicleImageByBodyType(Action<ObservableCollection<StandardVehicleImage>> callback, string bodyTypeId) {
            callback(new StandardVehicleImageDesignModel());
        }

        public void GetVehicleInformation(Action<ObservableCollection<StandardVehicleImage>> callback)
        {
            callback(new StandardVehicleImageDesignModel());
        }

        public void GetStates(Action<ObservableCollection<State>> callback) {
            callback(new StateDesignModel());
        }

        public void GetVehicleBodyType(Action<ObservableCollection<VehicleBodyType>> callback) {
            callback(new VehicleBodyTypeDesignModel());
        }

        public void GetVehicleYears(Action<ObservableCollection<int>> callback) {
            callback(new VehicleYearMakeModelDesignModel().Years);
        }
        public void GetVehicleMakes(Action<ObservableCollection<string>> callback, int year) {
            callback(new VehicleYearMakeModelDesignModel().Makes);
        }
        public void GetVehicleModels(Action<ObservableCollection<string>> callback, int year, string make) {
            callback(new VehicleYearMakeModelDesignModel().Models);
        }
        public void GetVehicleImage(Action<ObservableCollection<VehicleReferencePhoto>> callback, int year, string make, string model)
        {
            callback(null);
        }




        public void GetAdjusterAppointmentsByDelta(System.Collections.Generic.Dictionary<Guid, DateTime> existingEntities, Action<ObservableCollection<AdjusterAppointment>> callback)
        {
            //callback(new DesignAdjusterAppointment());
        }


        public void GetAdjusterAppointmentsDeltaInformation(Action<List<KeyValuePair<IEntity, EntitySyncOperation>>> callback)
        {
            throw new NotImplementedException();
        }




        public void GetClaimDeltaInformation(Action<List<KeyValuePair<IEntity, EntitySyncOperation>>> callback) {
            throw new NotImplementedException();
        }

        public void GetClaimStatusDeltaInformation(Action<List<KeyValuePair<IEntity, EntitySyncOperation>>> callback) {
            throw new NotImplementedException();
        }

        public void GetStateDeltaInformation(Action<List<KeyValuePair<IEntity, EntitySyncOperation>>> callback) {
            throw new NotImplementedException();
        }


        public void GetReferencePhoto(Guid photoGuid, Action<ObservableCollection<VehicleReferencePhoto>> callback) {
            return;
        }


        public void GetVehicleInformationDelta(Action<List<KeyValuePair<IEntity, EntitySyncOperation>>> callback) {
            throw new NotImplementedException();
        }


        public void GetClaimDamageDeltaInformation(Action<List<KeyValuePair<IEntity, EntitySyncOperation>>> callback) {
            throw new NotImplementedException();
        }
    }
}
